// 用户相关类型定义
import type { RoleType } from "@/utils/permissionCalc";

export type UserRole =
  | "PLATFORM_ADMIN" // 平台超级管理员
  | "SUPER_ADMIN" // 租户超级管理员
  | "SITE_ADMIN" // 站点管理员
  | string;

export interface RoleInfo {
  roleId: number;
  roleCode: string;
  roleType: RoleType; // 角色类型：1-平台管理员, 11-租户超管, 21-站点管理员, 31-普通操作员
  fixedPermission?: number; // 是否固定权限：1-固定，0-可编辑
}

export interface UserInfo {
  id: number;
  tenantId: number;
  siteId?: number | null; // 站点ID（null 表示全部站点）
  username: string;
  realName: string;
  phone?: string;
  role: UserRole;
  status: number;
  permissions?: string[]; // 用户权限代码列表（旧版兼容）

  // 新增：基于角色类型的权限系统
  roles?: RoleInfo[]; // 用户角色列表（支持多角色）
  authorityCodes?: string[]; // 用户自定义权限码（可编辑角色）
  moduleResourceCodes?: string[]; // 已开通的模块资源编码
}

export interface LoginParams {
  username: string;
  password: string;
  tenantCode?: string; // 租户编码（租户端登录需要）
}

export interface LoginResponse {
  token: string;
  userInfo: UserInfo;
}

// 用户管理相关类型
export interface User {
  id: number;
  tenantId: number;
  username: string;
  password?: string; // 仅新增时需要
  roleId?: number; // 角色ID
  roleName?: string; // 角色名称（显示用）
  realName: string;
  phone?: string;
  email?: string;
  status: number;
  lastLoginTime?: string;
  lastLoginIp?: string;
  createTime?: string;
  updateTime?: string;
}

export interface UserListParams {
  current: number;
  size: number;
  keyword?: string;
  status?: number;
}

export interface UserFormData {
  id?: number;
  username: string;
  password?: string;
  realName: string;
  phone?: string;
  email?: string;
  roleId?: number;
  status: number;
}

export interface ResetPasswordParams {
  newPassword: string;
}

export interface UpdateStatusParams {
  status: number;
}
